# coding=utf-8
"""
    美化 Json
"""
import re


# @Time    :  2024-08-14 19:02:56
# @Author  :  jiangtong
# @Email   :  gingerqgyy@outlook.com
# @Project :  test_curl_convert
# @File    :  beautify_json

def syntax_highlight(json_str):
    json_str = json_str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
    highlighted_json = re.sub(r'("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|\d+)',
                              lambda match: f'<span class="{get_json_class(match)}">{match.group(0)}</span>',
                              json_str)
    return highlighted_json


def get_json_class(match):
    if match.group(0).startswith('"'):
        return 'json-key' if match.group(0).endswith(':') else 'json-string'
    elif match.group(0) in ['true', 'false']:
        return 'json-boolean'
    elif match.group(0) == 'null':
        return 'json-null'
    else:
        return 'json-value'
